package com.learner.pojo.user;


import lombok.Data;
import org.hibernate.annotations.UpdateTimestamp;
import org.springframework.data.annotation.CreatedDate;
import org.springframework.data.annotation.Id;
import org.springframework.data.annotation.LastModifiedDate;
import org.springframework.data.mongodb.core.index.Indexed;
import org.springframework.data.mongodb.core.mapping.Document;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;

/**
 * @author ice2020x
 * @Date: 2023/2/3
 * @Description: 用户
 **/
@Data
@Document(collection = "users")
public class User implements Serializable {
    private static final long serialVersionUID = -1;
    /**
     * id
     */
    @Id
    private String id;

    private String userId;
    /**
     * 手机号
     */
    @Indexed(unique = true)
    private String username;

    private String password;
    /**
     * 字段唯一accounts + 10000000L
     */
    @Indexed(unique = true)
    private String code;
    /**
     * 头像
     */
    private String avatar;
    /**
     * 签名
     */
    private String signature;

    /**
     * 昵称
     */
    private String nickname;
    /**
     * 邮箱
     */
    private String email;

    private Province province = new Province();
    private City city = new City();
    private Town town = new Town();
    /**
     * 男 1 女 2 保密 0（默认值）
     */
    private Integer sex = 0;


    /**
     * 0：正常可用，1：冻结不可用，2：注销不可用
     */
    private Integer status = 0;

    /**
     * 年龄
     */
    private Integer age;
    /**
     * 在线时长
     */
    private Long onlineTime = 0L;
    /**
     * 登录设备信息
     */
    private BrowserSetting loginSetting;

    /**
     * 分组信息，默认添加“我的好友” 这个分组
     */
    private Map<String, ArrayList<String>> friendFenZu = new HashMap<String, ArrayList<String>>() {
        {
            put("bestFriend", new ArrayList<>());
        }
    };
    /**
     * 好友备注信息,好友id为key
     */
    private Map<String, String> friendBeiZhu = new HashMap<>();
    /**
     * 是否是我的朋友
     */
    private boolean myFriend;
    /**
     * 是否是他的朋友
     */
    private boolean hisFriend;

    /**
     * 注册时间
     */
    @CreatedDate
    private Date createTime;

    /**
     * 最后一次登录
     */
    @LastModifiedDate
    private Date lastLoginTime;

}